import pandas as pd
from sympy.solvers import solve
from sympy import Symbol
import plotly.graph_objs as go
import plotly.express as px
import numpy as np
from math import *
surf = 3000 #m^2
''' if delta y = 1 m so delta surf = 200 m^2 '''
L = 2500 #m
n = 0.013
S0 = 0.009
K1 = K2 = 0.4 #voroodi khorooji
K3 = 0.15
maxH = 5 #m
# D(tunnel) = ?
g = 9.81 # m^2/s
Time = [3*i for i in range(17)]
Q_in = [0, 22, 48, 80, 100, 110, 113, 112, 106, 95, 83, 72, 65, 60, 57, 55, 53]
inputs = pd.DataFrame({'zaman': Time, "debi voroodi(m^3/s)": Q_in})
inputs = inputs.transpose()
inputs
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| zaman | 0 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 | 33 | 36 | 39 | 42 | 45 | 48 |
| debi voroodi(m^3/s) | 0 | 22 | 48 | 80 | 100 | 110 | 113 | 112 | 106 | 95 | 83 | 72 | 65 | 60 | 57 | 55 | 53 |
heads = [0.1 * i for i in range(int(maxH/0.1 + 1))]
Os = [80 * i**1.5 for i in heads]
Vs = [10**6 * (3*i + (0.1 * i**2)) for i in heads]
VperdeltaT = [i / 10800 for i in Vs] # 3Hrs
Ns = [VperdeltaT[i] + (Os[i]/2) for i in range(len(VperdeltaT))]
df1 = pd.DataFrame({"H":heads, "O": Os, "V": Vs,
"V/dt": VperdeltaT, "N": Ns})
df1
| H | O | V | V/dt | N | |
|---|---|---|---|---|---|
| 0 | 0.0 | 0.000000 | 0.0 | 0.000000 | 0.000000 |
| 1 | 0.1 | 2.529822 | 301000.0 | 27.870370 | 29.135281 |
| 2 | 0.2 | 7.155418 | 604000.0 | 55.925926 | 59.503635 |
| 3 | 0.3 | 13.145341 | 909000.0 | 84.166667 | 90.739337 |
| 4 | 0.4 | 20.238577 | 1216000.0 | 112.592593 | 122.711881 |
| 5 | 0.5 | 28.284271 | 1525000.0 | 141.203704 | 155.345839 |
| 6 | 0.6 | 37.180640 | 1836000.0 | 170.000000 | 188.590320 |
| 7 | 0.7 | 46.852961 | 2149000.0 | 198.981481 | 222.407962 |
| 8 | 0.8 | 57.243340 | 2464000.0 | 228.148148 | 256.769818 |
| 9 | 0.9 | 68.305197 | 2781000.0 | 257.500000 | 291.652599 |
| 10 | 1.0 | 80.000000 | 3100000.0 | 287.037037 | 327.037037 |
| 11 | 1.1 | 92.295179 | 3421000.0 | 316.759259 | 362.906849 |
| 12 | 1.2 | 105.162731 | 3744000.0 | 346.666667 | 399.248032 |
| 13 | 1.3 | 118.578244 | 4069000.0 | 376.759259 | 436.048381 |
| 14 | 1.4 | 132.520187 | 4396000.0 | 407.037037 | 473.297131 |
| 15 | 1.5 | 146.969385 | 4725000.0 | 437.500000 | 510.984692 |
| 16 | 1.6 | 161.908616 | 5056000.0 | 468.148148 | 549.102456 |
| 17 | 1.7 | 177.322305 | 5389000.0 | 498.981481 | 587.642634 |
| 18 | 1.8 | 193.196273 | 5724000.0 | 530.000000 | 626.598137 |
| 19 | 1.9 | 209.517541 | 6061000.0 | 561.203704 | 665.962474 |
| 20 | 2.0 | 226.274170 | 6400000.0 | 592.592593 | 705.729678 |
| 21 | 2.1 | 243.455129 | 6741000.0 | 624.166667 | 745.894231 |
| 22 | 2.2 | 261.050187 | 7084000.0 | 655.925926 | 786.451019 |
| 23 | 2.3 | 279.049816 | 7429000.0 | 687.870370 | 827.395279 |
| 24 | 2.4 | 297.445121 | 7776000.0 | 720.000000 | 868.722560 |
| 25 | 2.5 | 316.227766 | 8125000.0 | 752.314815 | 910.428698 |
| 26 | 2.6 | 335.389922 | 8476000.0 | 784.814815 | 952.509776 |
| 27 | 2.7 | 354.924217 | 8829000.0 | 817.500000 | 994.962109 |
| 28 | 2.8 | 374.823692 | 9184000.0 | 850.370370 | 1037.782216 |
| 29 | 2.9 | 395.081764 | 9541000.0 | 883.425926 | 1080.966808 |
| 30 | 3.0 | 415.692194 | 9900000.0 | 916.666667 | 1124.512764 |
| 31 | 3.1 | 436.649058 | 10261000.0 | 950.092593 | 1168.417122 |
| 32 | 3.2 | 457.946722 | 10624000.0 | 983.703704 | 1212.677065 |
| 33 | 3.3 | 479.579816 | 10989000.0 | 1017.500000 | 1257.289908 |
| 34 | 3.4 | 501.543218 | 11356000.0 | 1051.481481 | 1302.253091 |
| 35 | 3.5 | 523.832034 | 11725000.0 | 1085.648148 | 1347.564165 |
| 36 | 3.6 | 546.441580 | 12096000.0 | 1120.000000 | 1393.220790 |
| 37 | 3.7 | 569.367368 | 12469000.0 | 1154.537037 | 1439.220721 |
| 38 | 3.8 | 592.605096 | 12844000.0 | 1189.259259 | 1485.561807 |
| 39 | 3.9 | 616.150631 | 13221000.0 | 1224.166667 | 1532.241982 |
| 40 | 4.0 | 640.000000 | 13600000.0 | 1259.259259 | 1579.259259 |
| 41 | 4.1 | 664.149381 | 13981000.0 | 1294.537037 | 1626.611727 |
| 42 | 4.2 | 688.595091 | 14364000.0 | 1330.000000 | 1674.297546 |
| 43 | 4.3 | 713.333583 | 14749000.0 | 1365.648148 | 1722.314939 |
| 44 | 4.4 | 738.361429 | 15136000.0 | 1401.481481 | 1770.662196 |
| 45 | 4.5 | 763.675324 | 15525000.0 | 1437.500000 | 1819.337662 |
| 46 | 4.6 | 789.272070 | 15916000.0 | 1473.703704 | 1868.339739 |
| 47 | 4.7 | 815.148575 | 16309000.0 | 1510.092593 | 1917.666880 |
| 48 | 4.8 | 841.301848 | 16704000.0 | 1546.666667 | 1967.317591 |
| 49 | 4.9 | 867.728990 | 17101000.0 | 1583.425926 | 2017.290421 |
| 50 | 5.0 | 894.427191 | 17500000.0 | 1620.370370 | 2067.583966 |
fig = go.Figure()
fig.add_trace(go.Scatter(x = df1.N, y = df1.O))
x = np.array(df1.N)
y = np.array(df1.O)
m, b = np.polyfit(x, y, 1)
m, b
(0.4439886133372627, -63.18103398350222)
#mx^2 + bx
O = lambda N: m * N + b
meanI = []
for i in range(len(Q_in)):
try:
I1 = Q_in[i]
I2 = Q_in[i+1]
meanI.append((I2 + I1) / 2)
except:
pass
#----------------------------------------------------------------
O0 = Q_in[0]
N1 = N0 = O0 / 2
out = [O0]
Nfinal = []
dN = meanI[0] - O0
#----------------------------------------------------------------
for i in range(len(meanI)):
Ibar = meanI[i]
dN = Ibar - O0
N1 = N1 + dN
O0 = O(N1)
out.append(O0)
px.scatter(out)
# ax^6 + bx^5 + cx^4 + dx^3 + ex^2 + fx + g
x = np.array(df1.N)
y = np.array(df1.O)
a, b, c, d, e, f, g = np.polyfit(x, y, 6)
O = lambda N: (a * (N**6)) + (b * N**5) + c * N**4 + d * N**3 + e * N**2 + f * N + g
O0 = Q_in[0]
N1 = N0 = O0 / 2
out = [O0]
Nfinal = []
dN = meanI[0] - O0
#----------------------------------------------------------------
for i in range(len(meanI)):
Ibar = meanI[i]
dN = Ibar - O0
N1 = N1 + dN
O0 = O(N1)
out.append(O0)
px.scatter(out)
final = pd.DataFrame({"debi khorooji" : out, 'debi voroodi': Q_in})
final
| debi khorooji | debi voroodi | |
|---|---|---|
| 0 | 0.000000 | 0 |
| 1 | 0.235429 | 22 |
| 2 | 5.427695 | 48 |
| 3 | 16.619508 | 80 |
| 4 | 34.291746 | 100 |
| 5 | 54.428756 | 110 |
| 6 | 72.478220 | 113 |
| 7 | 85.935663 | 112 |
| 8 | 93.954934 | 106 |
| 9 | 96.263270 | 95 |
| 10 | 93.702495 | 83 |
| 11 | 88.053800 | 72 |
| 12 | 81.359281 | 65 |
| 13 | 75.036937 | 60 |
| 14 | 69.608147 | 57 |
| 15 | 65.225696 | 55 |
| 16 | 61.670751 | 53 |
fig = go.Figure()
fig.add_trace(go.Scatter(x = Time, y = Q_in, name = 'Q_in'))
fig.add_trace(go.Scatter(x = Time, y = out, name = 'Q_out'))
fig.update_layout(
title="Hydrograph",
xaxis_title="zaman(s)",
yaxis_title="debi(m^3/s)",
legend_title="jaryan",
font=dict(
family="Courier New, monospace",
size=18,
color="RebeccaPurple"
)
)
Q_max = max(out)
Q_design = 1.3 * Q_max
# Q = V A #m^3/s ===> A = Q / V
# A = (pi* D^2) / 4 #m^2
# assumed V = 5 - 15 m/s
soratha = [v for v in range(1, 16)]
ghotrha = []
for V in soratha:
A = Q_design / V
D = sqrt((4*A) / pi)
ghotrha.append(D)
fig = go.Figure()
fig.add_trace(go.Scatter(x = soratha, y = ghotrha))
fig.update_layout(
title="نمودار قطرها برحسب سرعت های مختلف جریان",
xaxis_title="Speed of flow (m/s)",
yaxis_title="Diameter (m)",
font=dict(
size=18,
color="Darkred"
)
)
import IPython.display as ID
img = ID.Image("diameter.jpeg")
ID.display(img)
zarib_d = L *( (4 * n * Q_max * (4**(2/3))) / (pi) ) ** 2
yek = maxH + L * S0
K_total = K1 + K2 + K3
do = K_total *( (((Q_max * 4) ** 2) / (2 * g * (pi**2))) )
yek , do
(27.5, -6164.006291559182)
solved_d = ID.Image('solved_d.png')
ID.display(solved_d)
d = 4.06334
print('ghotre ba in ravesh barabare %f'%d)
ghotre ba in ravesh barabare 4.063340